// #include <iostream>
// using namespace std;

// class point
// {

//     int x;
//     int y;

// public:
//     point(int m_x, int m_y) : x(m_x), y(m_y){};
//     const point operator+(const point &m_point) const //不允许返回临时对象引用，因为（a+b）=12 临时对象的赋值不被允许。
//     {
//         return point(x + m_point.x, y + m_point.y);
//     }
//     void display()
//     {
//         cout << x << y << endl;
//     }
// };

// int main()
// {
//     point p1(2, 4);
//     point p2(1, 3);
//     point p3 = p1 + p2;
//     p3.display();
//     return 0;
// }
#include <iostream>
using namespace std;

class point
{

    int x;
    int y;

public:
    point(int m_x, int m_y) : x(m_x), y(m_y){};
    const point operator+(const point &m_point) const //  m_point是常引用作参数，接收非常对象p3
    {
        return point(x + m_point.x_print(), y + m_point.y_print()); //常引用不能调用非常引用函数（其实这里的常引用m_point相当于常对象，引用本来就是对象的副本）
    }
    int x_print()
    {
        return x;
    }
    int y_print()
    {
        return y;
    }
};

int main()
{
    point p1(2, 4);
    point p2(1, 3);
    point p3 = p1 + p2;
    p3.x_print();
    p3.y_print();
    return 0;
}
